package com.qeado.util;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;

public class FileUpload {
	
	private static final long serialVersionUID = 572146812454l ;
    private static final int BUFFER_SIZE = 16 * 1024 ;
   
    private File myFile; // 上传的文件
    private String fileName; // 上传文件的文件名
    private String imageFileName; // 上传好保存到服务器的文件名
    private String basePath; // 项目路径 ，不包括‘/’
    private String userDir; // 用户文件夹名称
   
    public File getMyFile() {
		return myFile;
	}

	public void setMyFile(File myFile) {
		this.myFile = myFile;
	}

	public String getFileName() {
		return fileName;
	}

	public void setFileName(String fileName) {
		this.fileName = fileName;
	}

	public String getImageFileName() {
		return imageFileName;
	}

	public void setImageFileName(String imageFileName) {
		this.imageFileName = imageFileName;
	}

	public String getBasePath() {
		return basePath;
	}

	public void setBasePath(String basePath) {
		this.basePath = basePath;
	}

	public String getUserDir() {
		return userDir;
	}

	public void setUserDir(String userDir) {
		this.userDir = userDir;
	}

	/* 拷贝副本 */
    private static void copy(File src, File dst) {
        try {
           InputStream in = null ;
           OutputStream out = null ;
            try {                
               in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);
               out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);
                byte [] buffer = new byte [BUFFER_SIZE];
                while (in.read(buffer) > 0 ) {
                   out.write(buffer);
               } 
           } finally {
                if ( null != in) {
                   in.close();
               } 
                if ( null != out) {
                   out.close();
               } 
           } 
       } catch (Exception e) {
           e.printStackTrace();
       } 
   } 
   
    /* 上传文件的扩展名 */
    private static String getExtention(String fileName) {
        int pos = fileName.lastIndexOf( "." );
        return fileName.substring(pos);
   } 

    public void upload()  {        
       String url = basePath + "\\" + userDir;
       mkdir(url);  
       imageFileName =  new Date().getTime() + getExtention(fileName);
       File imageFile = new File(url + "\\" + imageFileName);
       imageFileName = userDir + "/" + imageFileName;
       copy(myFile, imageFile);
   } 
    
    public void mkdir(String path) {   
        File file = new File(path); 
        if( !file.exists()){ 
        	file.mkdirs(); 
        } 			
	}
}
